From: Jasper St. Pierre Date: Sun, 27 Apr 2014 15:05:10 +0000 (-0400) Subject: appDisplay: Fix pages getting "stuck" under touch X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2511 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=82ec6c08b8c0b46311687930aa2135119949e40b;p=gnome-shell.git appDisplay: Fix pages getting "stuck" under touch We often call goToPage like: this.goToPage(this._currentPage - 1); (or + 1). During panning, these are based on the velocity values of the gesture action. If we're already on the first or last page and the panning ends, it's possible to get goToPage that's either -1 or greater than the last page. During normal usage, this isn't a problem, since the Y values will be correct, always. But when panning, the Y values stick to the finger, and thus if we return early, we won't snap to the exact page, making it seem like things get "stuck". Fix this the simple way by clamping to the correctly-ranged values of pageNumber https://bugzilla.gnome.org/show_bug.cgi?id=729064 --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 2596929a4..0f5baf82c 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -81,6 +81,10 @@ function _getFolderName(folder) { return name; } +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} + const BaseAppView = new Lang.Class({ Name: 'BaseAppView', Abstract: true, @@ -439,8 +443,8 @@ const AllView = new Lang.Class({ }, goToPage: function(pageNumber) { - if(pageNumber < 0 || pageNumber > this._grid.nPages() - 1) - return; + pageNumber = clamp(pageNumber, 0, this._grid.nPages() - 1); + if (this._currentPage == pageNumber && this._displayingPopup && this._currentPopup) return; if (this._displayingPopup && this._currentPopup)